home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
internet
/
pppprj12.zip
/
README.DOC
< prev
next >
Wrap
Text File
|
1996-06-22
|
11KB
|
237 lines
┌───────────────────[ A Cerebrum Programming Production ]────────────────────┐
│ │
│ PPP Project v1.0 │
│ WWIV Network Packet Transport │
│ Freeware (c) 1996 by Frank Reid │
│ │
└────────────────────────────────────────────────────────────────────────────┘
I. ACKNOWLEDGEMENTS
A. The Beta team.
First and foremost: Thanks to the beta testers, particularly Perry
Wolf, Dawg and Twinkie, for their patience and endurance! I'm proud
that the development team now includes several programming experts,
including Trader Jack from CellarSoft, Goose from Twilight Zone and
Hellfire of Linker and APEX fame.
B. The PPP transport layer.
I use (and have included) Merit Software's freeware EtherPPP module.
This emulates an ethernet class device to establish a PPP session
layer. You can run nearly any TCP/IP or IPX application in such a
session. PPP.EXE works fine here, but I understand others have less
success. Try configuring the capture vector to something other than
the default (0x60). If it still doesn't work, grab PPPDEMO.ZIP, a
far more advanced ethernet emulator, or any of several others which
abound. (A Netscape search for "etherppp" or "wattcp" will turn up
a bunch of other packet drivers!)
C. The TCP/IP sockets.
The Waterloo TCP/IP sockets have found their way into more Internet
applications than any other library. I made many modifications to
their code to have it working the way I wanted, but the code is
nonetheless theirs.
D. The POP and SMTP routines.
Walter Andrew Nolan did most of the work needed to communicate with
POP and SMTP hosts under the Waterloo sockets. I built onto that
effort, and included some POP3-specific directives from RFC1939. At
the most basic level, this program communicates in plain English to
the remote hosts -- really nothing fancy about it.
E. The WWIV network routines.
Naturally, a great deal of this code is drawn from WWIV source,
including the .INI routines and liberal use of the structures in
WWIV's NET.H. I used Midnight Tree Bandit's NETECH34 v2.0 as a
reference document frequently. (If you do any network programming,
this is a must!)
II. INTRODUCTION
A. Background.
This project began in an attempt to fill a void. The NGTrans
newsgroup module from WSS requires shell access with an Internet
Service Provider. That's expensive and hard to find in these parts,
so I wanted to use my cheap ($12/mo) PPP account to retrieve and
import newsgroups. The newsgroup project was nearly completed when
I learned Jim Nunn (former IceNET NC and a major WWIV-type network
server) was taking down his system. I refocused my efforts on a
solution to move my network packets via the same PPP account in the
hope it would reduce my long distance bill. It has! I now move
mail on a half-dozen networks to/from Twinkie's St Louis Private
Mail Server! You should, too!
B. The future.
I can't count the hours I've put into developing these routines.
That's a reflection of the complexity of talking real-time with
remote hosts, the extensive error-checking necessary to protect
volatile network data (and even more is needed) and my own lack of
formal programming training! I'm sure I can't spend much more time
on this project, as my wife grows very impatient! Therefore, I have
made the source code available to several others in the hope this
project will never die, but only get more robust.
III. CONCEPT OF OPERATIONS
A. System requirements.
As you can see by the small size of the executables, this code is
highly optimized. Memory requirements should be insigificant, if
you're running WWIV v4.24+ (with network shrink routines). At the
moment, disk space is not checked before receiving packets (an easy
addition to a future release), so keep room! In operation, the
program is transparent to WWIV's normal network routines. As a
result, systems on any WWIV-type network can support Internet-based
packet transfers along with standard modem connections. The
requirements to do this are:
1) The program is properly installed and working!
2) ADDRESS.NET, containing node number(s) and corresponding email
account(s) for Internet-based systems, exists in the appropriate
network directory.
B. How it works.
The BBSLIST/CONNECT and associated network files are standard WWIV.
When you force a callout (from WFC or DOS), the program checks to
see if an ADDRESS.NET exists in the network directory. If not, the
program ends, and normal network routines are used. If ADDRESS.NET
contains an Internet account for the callout node, the program takes
control. Pending packets (S*.NET and Z*.NET) for anyone listed in
the ADDRESS.NET are packed in UUE format with a message header
containing the appropriate addressees. These are placed into an
MQUEUE directory (pending transmission). The original packets are
then moved to a SENT directory (with a filename of the UNIX time, in
hex). A PPP session is established with your ISP, packets in MQUEUE
are sent via your defined sendmail host and packets are received
from your defined POP server.
C. POP3 routines.
The program can retrieve all packets from your POP3 server or just
those it identifies as network packets. To determine whether email
should be retrieved, the first 25 lines of each message are viewed
by the program (using the POP3-specific "TOP" directive). The lines
are scanned to see if they contain the words "begin 600" (a UUE
packet signature) with a file extension of NET (a net packet),
ZIP/ARJ/LZH (an archive) or GIF/JPG (a graphic file). Email which
doesn't meet this criteria is left on the POP3 server for you to
read with your normal email program (Eudora, PMPop, Pegasus or
whatever).
D. Cleaning up.
Upon identifying one of the file types listed above, the program
retrieves the message into the TEMP directory defined for the
current WWIV instance. Once all packets are received, the program
decodes the UUE files from TEMP and places them in either of two
places. In the case of network packets, the output is placed in the
network directory and named sequentially to P1-nnn.NET to prevent
overwrites. In the case of archives, graphics or regular email, the
messages are extracted and placed into the CHECKNET directory. When
all files are received and processed, the program calls the normal
network routines to process the net packets. Files sent to CHECKNET
can be viewed with any editor or external mail program.
IV. GETTING STARTED
A. Find a network.
Join PPPnet if you wish to evaluate the program more fully (and
safely!) Fill out PPPNET.APP and mail it to me, and I'll respond
with a current network package. When you're up and running on
PPPnet, you can "Linker" other networks you carry via the PPPnet
connection, as I do. (Twinkie is a long-term, very stable multinet
server, and I expect several other servers will soon join!) If
you're brave, and you'd rather set it up with an existing network
connection, have at it. At present, the project supports Internet
transfers on a single network per system, as there is no foolproof
way to identify where a given packet belongs otherwise. A future
revision will include support for multiple networks having Internet
delivery.
B. Program installation.
Change to your main BBS directory and type:
REN NETWORK.EXE NETWORK0.EXE
This renames WWIV's standard main network executable so it will not
be overwritten. Do not proceed if you get an error. Instead, find
out why and fix it. After successfully doing so, extract these
files from the distribution archive into your BBS main directory:
NETWORK.EXE (the network executable replacement)
POP.EXE (the POP3 and SMTP routines)
UU.EXE (the UU encode/decode routines)
NET.INI (the main configuration file)
DIAL.INI (the PPP-specific dialing session configuration)
C. Edit the INI files.
Edit NET.INI and DIAL.INI (now in your main BBS directory) to match
your configuration and user information. The files are commented to
help you do this. DIAL.INI contains the sequence of commands you
need to log on to your ISP. The script language is limited by Merit
Software's EtherPPP driver, and it's not very robust. It should,
however, be adequate to allow you to navigate into a PPP session,
even through a shell account.
D. PAP/CHAP authentication.
The EtherPPP has limited but adequate PAP support. If your ISP uses
PAP to get your username and password upon connecting, extract the
file CONFIG.PPP from ETHERPPP.ZIP archive and place it in your BBS
main directory. Edit the file to reflect your information. If that
doesn't work, there are several other ethernet "shims" which work
fine with the Waterloo TCP sockets. Try PPPDEMO.ZIP, a shareware
program which appears more configurable (but is untested here).
V. FINAL NOTES
A. Trusting your data.
I don't trust Internet email as much as direct modem-to-modem
connections. On a direct connection, you will at least know if
something ate up your net packet! This is why sent packets are
stored for a user-defined time period in the SENT directory, and
they can be manually retransmitted by copying them back to the
network directory. A likely future enhancement is an audit trail to
track sent/received packets and automagically retransmit them.
B. WSS Products.
This project is not intended to compete with WSS' NGTrans. However,
the capability to import/export mail and newsgroups is certainly
there. In fact, I have a working prototype for newsgroup retrieval,
but I need more time with it before it's stable enough to release.
If you'd like to donate to its development, my address is listed
below. I'll spend as much time as possible with it if you do.
Frank Reid
Eagle's Dare
9350 Harvest Way
Laurel, MD 20723
C. About Cerebrum.
Cerebrum is a group of loosely-affiliated but highly-talented
programmers working to improve the availability and quality of
source code modifications and utilities for other WWIV sysops. Look
for many other Cerebrum products on a WWIV support BBS near you, and
please contribute to the future of WWIV by registering the Cerebrum
products you do use! If you are interested in hosting Cerebrum
products on your own BBS as a Cerebrum Support Site, contact Dawg
@2121.WWIVNET for an application.